package com.hhf.rpc.core.protocol;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @Author hhf
 * @Date 2024/10/19
 * @Description 协议消息结构体
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ProtocolMessage<T> {

    /**
     * 消息头(请求/响应对象)
     */
    private T body;

    /**
     * 消息头(共占据 17byte)
     */
    private Header header;

    @Data
    public static class Header{
        /**
         * 魔数,保证安全性
         */
        private byte magic;

        /**
         * 版本号
         */
        private byte version;

        /**
         * 序列化器
         */
        private byte serializer;

        /**
         * 消息类型:请求,响应,心跳检测,其他
         */
        private byte type;

        /**
         * 状态
         */
        private byte status;

        /**
         * 请求Id(long占据 8byte)
         */
        private long requestId;

        /**
         * 消息体长度(int占据 4byte)
         */
        private int bodyLength;
    }
}
